使用页面 (Page)主页面 (Page Host) 节点

使用页面 (Page) 节点在应用程序中创建用户界面结构,使用主页面 (Page Host) 节点管理主页面 (Page Host) 节点下页面 (Page) 节点之间的导航请求和迁移。例如,您可以使用页面 (Page)主页面 (Page Host) 节点在 Kanzi 应用程序中创建用户界面的不同部分,例如主页面 (Page Host) 节点-HomeMediaNavigationSettings 屏幕,每个都有其自身的页面 (Page)主页面 (Page Host) 节点层次。

您可以嵌套主页面 (Page Host) 节点,以创建应用程序用户界面的结构。例如,您可以使用一个主页面 (Page Host) 节点管理在应用程序用户界面的根级进行的导航,例如 HomeMediaNavigationSettings 之间的迁移,并为其添加子主页面 (Page Host) 节点,每个子节点都管理自己的页面 (Page) 节点层级,例如 Media 主页面 (Page Host) 节点的页面 (Page) 节点。

请完成教程,以了解如何使用页面 (Page)主页面 (Page Host) 节点创建应用程序。请参阅教程:使用页面 (Page) 节点创建应用程序流

激活页面 (Page)主页面 (Page Host) 节点

页面 (Page) 节点处于活动状态时,它的所有祖先 页面 (Page)主页面 (Page Host) 节点也将处于活动状态。当页面 (Page)主页面 (Page Host) 节点处于活动状态时,它的所有内容以及它所有祖先页面 (Page)主页面 (Page Host) 节点的内容将可见并允许用户与其进行交互。在一个简单的使用案例中,层级中只有一个页面 (Page) 节点处于活动状态。但您可以在层级中同时激活一个以上的页面 (Page)主页面 (Page Host) 节点,以构建一个复杂的结构。要实现目的,请在所有要自动激活的页面 (Page)主页面 (Page Host) 节点中启用 保持活动状态 (Keep Active) 属性。当类节点的父页面 (Page)主页面 (Page Host) 节点激活时,它们会自动激活。

跟踪激活

主页面 (Page Host) 节点会在自己的范围内跟踪当前激活的页面 (Page)主页面 (Page Host) 节点。当激活主页面 (Page Host) 节点时,主页面 (Page Host) 节点会在自己的范围内自动激活当前激活的页面 (Page)主页面 (Page Host) 节点。这样可以使主页面 (Page Host) 节点记住其状态并在激活期间将状态恢复到停用前的状态。

页面 (Page)主页面 (Page Host) 节点之间导航

主页面 (Page Host) 节点会处理页面 (Page) 节点之间的导航和迁移。因此,您必须放置一个主页面 (Page Host) 节点作为页面 (Page) 节点树层级的祖先。要在页面 (Page) 节点之间导航,请让导航系统导航到所选的页面。当导航到一个页面 (Page) 节点时,Kanzi 会使节点迁移到可见(激活)状态,节点的内容将对用户可见。当离开一个页面 (Page) 节点时,Kanzi 会使节点迁移到不可见(停用)状态,节点的内容将不再对用户可见。Kanzi 支持在页面 (Page) 节点之间进行动画化迁移(随着时间的推移)和即时迁移(立即)。请参阅设置页面 (Page) 与主页面 (Page Host) 节点之间的迁移

主页面 (Page Host) 节点在导航中的作用

主页面 (Page Host) 节点设置为页面 (Page) 节点的祖先时,主页面 (Page Host) 节点会倾听其子孙页面 (Page) 节点的导航请求。当主页面 (Page Host) 节点收到导航请求时,它会开始向页面 (Page) 节点进行导航,后者会发出一条消息。导航过程需要解析当前激活的页面 (Page)主页面 (Page Host) 节点到目标页面 (Page)主页面 (Page Host) 节点的线路,然后在导航线路中的页面 (Page) 节点之间执行迁移,直到目标页面 (Page)主页面 (Page Host) 节点激活为止。每个主页面 (Page Host) 节点管理着自己范围内的导航,而且不会干扰其他的主页面 (Page Host) 节点。

子页面之间的导航

主页面 (Page Host) 节点支持在自己范围内的下一个和上一个页面 (Page)主页面 (Page Host) 节点之间进行导航。例如,这样即可使用按键输入来构建导航支持。通过启用循环子页 (Loop Subpages) 属性,您可以进一步配置功能,以设置当导航到下一个和上一个页面 (Page)主页面 (Page Host) 时,您希望主页面 (Page Host) 节点从最后一个页面 (Page) 节点向第一个节点循环还是从第一个节点向最后一个节点循环。

使用页面 (Page)主页面 (Page Host) 节点创建应用程序结构

使用页面 (Pages) 窗口创建和管理您的应用程序结构。

要使用页面 (Pages) 窗口创建应用程序结构:

  1. 页面 (Pages) 窗口将鼠标指针移到RootPage 上并点击 两次,在RootPage 节点下创建两个页面 (Page) 节点。
    您在页面 (Pages) 中创建页面 (Page) 节点时,也可以在工程 (Project) 中看到同样的页面 (Page) 节点。

    要在 页面 (Pages) 窗口中平移和放大,请使用以下快捷键件:

    动作快捷键
    平移
    • 点击鼠标中键并拖动。
    • 按下 Space 键,然后点击鼠标左键并拖动。
    缩放
    • 滚动鼠标滚轮。
    • 按下 ShiftAlt 键,然后点击鼠标左键并拖动。
      
  2. 页面 (Pages) 中双击在上一步中创建的页面 (Page) 节点名称并将其重命名为 ApplicationsSettings
  3. 页面 (Pages) 中右键点击ApplicationsSettings 节点并选择转换为主页面 (Convert to Page Host)
    使用主页面 (Page Host) 节点来分组其他主页面 (Page Host)页面 (Page) 节点。页面 (Page) 节点和主页面 (Page Host) 节点之间的主要区别在于主页面 (Page Host) 节点管理其树中的导航请求和迁移。
  4. 页面 (Pages) 中将鼠标指针移到主页面 (Page Host) 节点Applications 并在该节点底部点击 三次,以在Applications 节点下创建三个子页面 (Page) 节点,并将其命名为 HomeMediaCar
    这些页面 (Page) 节点每一个都保存其应用程序的内容。在本教程中您只需添加这些应用程序的图像进行原型制作。但是,应用程序从原型阶段移至开发阶段时,应将占位符替换为这些应用程序的内容。
    建议

    要查看应用程序中页面 (Page)主页面 (Page Host) 节点的整个结构,在页面 (Pages) 窗口中点击

  5. 在位于 Kanzi Studio 窗口底部的资产 (Assets) 窗口中点击导入资产 (Import Assets)
  6. 转到 <KanziWorkspace>/Tutorials/Pages/Assets 目录,选择所有文件,然后点击 打开 (Open)
    Kanzi Studio 将所选资产导入到工程并在资产 (Assets) 窗口中显示。 使用资产 (Assets) 窗口查看、选择和使用工程中的资产。
  7. 资产 (Assets) 拖到页面 (Pages) 窗口:您从页面 (Page) 中的资产 (Assets)页面 (Pages) 中的主页面 (Page Host) 节点拖放图像时,Kanzi Studio会使用您拖放的图像创建一个图像 (Image) 节点。
    建议

    您点击页面 (Pages) 窗口中的任意页面 (Page)主页面 (Page Host) 节点时,Kanzi 迁移到该节点,您可以在预览 (Preview) 中查看该迁移。

  8. 页面 (Pages) 中点击每个页面 (Page)。在预览 (Preview) 中您可以看到页面 (Page) 节点之间的推送 (Push) 迁移。
    建议

    如果只想在预览 (Preview) 中查看选定页面 (Page)主页面 (Page Host) 节点的内容,在页面 (Pages) 中双击该节点,Kanzi Studio 会在其自身选项卡的预览 (Preview) 中打开。

设置页面 (Page)主页面 (Page Host) 节点的外观

要设置 2D 节点的外观:

在 API 中使用 页面 (Page) 节点

要迁移到选定的页面节点:

//在主页面范围内查找子页面。
PageSharedPtr subPage = host->lookupNode<Page>(path);
//请求对给定的页面执行动画化迁移。
subPage->navigate();

要立即迁移到选定的页面节点:

//执行立即迁移,而不播放动画。
subPage->navigate(true);

有关详细信息,请参阅 API reference中的 Page 类。

在 API 中使用 主页面 (Page Host) 节点

要迁移到选定的页面节点:

//在主页面范围内查找子页面。
PageSharedPtr subPage = host->lookupNode<Page>(path);
//请求对给定的页面执行动画化迁移。
subPage->navigate();

要立即迁移到选定的页面节点:

//执行立即迁移,而不播放动画。
subPage->navigate(true);

要获取当前激活的 Page 或 PageHost 子孙节点:

//检索当前激活的子页面。
PageSharedPtr currentSubPage = host->getDefaultChild();

要从当前子页面迁移到下一个子页面:

//请求从当前激活的页面向下一个子页面执行动画化迁移。
PageHost::NavigateNextMessageArguments args;
host->dispatchMessage(PageHost::NavigateNextMessage, args);

有关详细信息,请参阅 API reference中的 PageHost 类。

页面 (Page)属性类型和消息

要查看 页面 (Page) 节点可用属性类型和消息的完整列表,请参阅Page

主页面 (Page Host)属性类型和消息

要查看 主页面 (Page Host) 节点可用属性类型和消息的完整列表,请参阅Page host

另请参阅

教程:使用页面 (Page) 节点创建应用程序流

设置页面 (Page) 与主页面 (Page Host) 节点之间的迁移

触发器